package cn.sc.summer.mybatis.table.datasource;

import cn.sc.summer.constant.mybatisplus.datasource.TableInfo;
import cn.sc.summer.constant.mybatisplus.datasource.TableInfoParam;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;
import java.util.Map;

/**
 * 接口：获取表数据信息
 *
 * @author a-xin
 * @date 2024/8/28 17:15
 */
public interface DataSourceTableInfo extends DataSource {

    /**
     * 获取指定数据源所有表主键信息
     *
     * @param jdbcTemplate 连接对象
     * @return 数据库表名对应的主键名称
     */
    Map<String, List<String>> getTablePrimary(JdbcTemplate jdbcTemplate);

    /**
     * 获取指定数据源的所有表信息
     *
     * @param jdbcTemplate 连接对象
     * @return 数据库表信息
     */
    List<TableInfoParam> getTableInfo(JdbcTemplate jdbcTemplate);

    /**
     * 获取指定数据源中表格的数据信息，如果表格为空，则返回所有表字段信息
     *
     * @param jdbcTemplate 连接对象
     * @return 数据库表字段信息
     */
    List<TableInfo> getColumnInfo(JdbcTemplate jdbcTemplate);

}
